home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 726-750 / 744 / fo2 / sources_fo2 / bitmap.c < prev    next >
C/C++ Source or Header  |  1995-03-18  |  859b  |  54 lines

  1. #include "defs.h"
  2.  
  3. Prototype BitMap();
  4. Prototype SetBinBM(WORD bloc,LONG *adrbm);
  5.  
  6. BitMap()
  7. {
  8. struct DiskList *dlist;
  9. struct RootB *adr;
  10. WORD     n;
  11. LONG    *buffbm,SBM=0;
  12.  
  13.     buffbm=BBM;
  14.     dlist=whereB(880);
  15.     if (dlist==0) NotSet(880,9);
  16.  
  17.     adr=dlist->dl_AdrB;
  18.     adr->BitMapTable[0]=881L;
  19.     adr->BMvalid=-1;
  20.  
  21.     /*printf("GFree: %d DFree: %d\n",GFree,DFree);*/
  22.  
  23.     for (n=0;n!=56;n++) buffbm[n]=-1L;    /* on nettoye le BitMap */
  24.     for (n=56;n!=128;n++) buffbm[n]=0L;
  25.     if (DFree<880)
  26.     {
  27.         for (n=0;n<DFree;n++) SetBinBM(n,buffbm);
  28.     }
  29.     else
  30.     {
  31.         for (n=0;n!=880;n++) SetBinBM(n,buffbm);
  32.         for (n=DFree+1;n!=1761;n++) SetBinBM(n,buffbm);
  33.         
  34.     }
  35.  
  36.     for (n=880;n!=GFree;n++) SetBinBM(n,buffbm);
  37.  
  38.     buffbm[0]=0L;
  39.     for (n=0;n!=128;n++)
  40.     {
  41.         SBM+=buffbm[n];
  42.     }
  43.     buffbm[0]=-SBM;
  44.  
  45. }
  46.  
  47. SetBinBM(bloc,adrbm)
  48. WORD bloc;
  49. LONG *adrbm;
  50. {
  51.     adrbm++;
  52.     adrbm[(bloc-2)/32] &= ~(1<< ( (bloc-2)%32 ));
  53. }
  54.